# @Time    :2025/3/30 23:48
"""
题目：实现一个图书馆管理系统
需求描述
设计一个简单的图书馆管理系统，使用面向对象的编程思想，包含以下功能：
图书类（Book）：
包含图书的基本信息，如 title（书名）、author（作者）、is_borrowed（是否被借出，初始值为 False）。
提供 borrow 方法，用于将图书标记为已借出。
提供 return_book 方法，用于将图书标记为可借阅。
提供 display_info 方法，用于显示图书的详细信息。
图书馆类（Library）：
包含一个图书列表 books，用于存储图书馆中的所有图书。
提供 add_book 方法，用于向图书馆中添加图书。
提供 borrow_book 方法，用于处理图书的借阅操作。若图书可借阅，则调用该图书的 borrow 方法并返回 True；若图书已被借出，则返回 False。
提供 return_book 方法，用于处理图书的归还操作。若图书已被借出，则调用该图书的 return_book 方法并返回 True；若图书本身就可借阅，则返回 False。
提供 display_all_books 方法，用于显示图书馆中所有图书的信息。

"""
class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author
        self.is_borrowed = False

    def borrow(self):
        if not self.is_borrowed:
            self.is_borrowed = True
            return True
        return False

    def return_book(self):
        if self.is_borrowed:
            self.is_borrowed = False
            return True
        return False

    def display_info(self):
        status = "已借出" if self.is_borrowed else "可借阅"
        print(f"书名: {self.title}, 作者: {self.author}, 状态: {status}")


class Library:
    def __init__(self):
        self.books = []

    def add_book(self, book):
        self.books.append(book)

    def borrow_book(self, title):
        for book in self.books:
            if book.title == title:
                return book.borrow()
        return False

    def return_book(self, title):
        for book in self.books:
            if book.title == title:
                return book.return_book()
        return False

    def display_all_books(self):
        for book in self.books:
            book.display_info()


# 测试代码
library = Library()

# 添加图书
book1 = Book("Python 编程入门", "张三")
book2 = Book("数据结构与算法", "李四")
library.add_book(book1)
library.add_book(book2)

# 显示所有图书信息
print("初始图书信息:")
library.display_all_books()

# 借阅图书
print("\n尝试借阅《Python 编程入门》:")
if library.borrow_book("Python 编程入门"):
    print("借阅成功")
else:
    print("借阅失败，图书已被借出")

# 显示所有图书信息
print("\n借阅后的图书信息:")
library.display_all_books()

# 归还图书
print("\n尝试归还《Python 编程入门》:")
if library.return_book("Python 编程入门"):
    print("归还成功")
else:
    print("归还失败，图书本身就可借阅")

# 显示所有图书信息
print("\n归还后的图书信息:")
library.display_all_books()
# class Book:
#     def __init__(self, title, author):
#         self.title = title
#         self.author = author
#         self.is_borrowed = False
#
#     def borrow(self):
#         if not self.is_borrowed:
#             self.is_borrowed = True
#             return True
#         return False
#
#     def return_book(self):
#         if self.is_borrowed:
#             self.is_borrowed = False
#             return True
#         return False
#
#     def display_info(self):
#         status = "已借出" if self.is_borrowed else "可借阅"
#         print(f"书名: {self.title}, 作者: {self.author}, 状态: {status}")
#
#
# class Library:
#     def __init__(self):
#         self.books = []
#
#     def add_book(self, book):
#         self.books.append(book)
#
#     def borrow_book(self, title):
#         for book in self.books:
#             if book.title == title:
#                 if book.borrow():
#                     print(f"成功借出: {title}")
#                     return True
#                 else:
#                     print(f"《{title}》已被借出")
#                     return False
#         print(f"未找到图书: {title}")
#         return False
#
#     def return_book(self, title):
#         for book in self.books:
#             if book.title == title:
#                 if book.return_book():
#                     print(f"成功归还: {title}")
#                     return True
#                 else:
#                     print(f"《{title}》未被借出")
#                     return False
#         print(f"未找到图书: {title}")
#         return False
#
#     def display_all_books(self):
#         if not self.books:
#             print("图书馆中没有图书")
#         for book in self.books:
#             book.display_info()
#
#
# # 示例使用
# if __name__ == "__main__":
#     library = Library()
#
#     # 添加图书
#     book1 = Book("Python编程", "李华")
#     book2 = Book("数据结构", "张三")
#     library.add_book(book1)
#     library.add_book(book2)
#
#     # 显示所有图书
#     library.display_all_books()
#
#     # 借阅图书
#     library.borrow_book("Python编程")
#     library.borrow_book("Python编程")  # 再次借阅同一本书
#
#     # 归还图书
#     library.return_book("Python编程")
#     library.return_book("Python编程")  # 再次归还同一本书
#
#     # 显示所有图书
#     library.display_all_books()

